////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//   Software       :                                                         //
//   Layer          : SRC                                                     //
//   Package        :                                                         //
//   Component      :                                                         //
//                                                                            //
//   File           : Usuario.h                                               //
//   Author         : RSO ( Rafael Sotomayor Brûlé )                          //
//   EMail          : rsotomayor@savtec.cl                                    //
//   Type           : C++ Source                                              //
//   Usage          :                                                         //
//   Purpose        : gestión de usuario                                      //
//                                                                            //
//                                                                            //
//   who when        what                                                     //
//   ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   RSO 09-10-2010  Creation                                                 //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////


#ifndef __CSERVER_H__
#define __CSERVER_H__

#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include "cglobal.h"


// Structure of arguments to pass to client thread */
typedef struct
{
    int clntSock;                      // Socket descriptor for client
}  tThreadArgs;


typedef struct {
  string id;
  string device;
  string idusuario;
  int    idfinger;
  int    umbral;
  int    opcion;
} tTransaccion ;

class CServer {
public:
  CServer(int socket_p);
  ~CServer();
  void            startTareas() ;  
  static void *   listenTask(void *p);
protected:
private:
  int         socket_a;
  static      CServer* pCServer_a;  
  int         CreateTCPServerSocket(unsigned short port);  
  int         AcceptTCPConnection(int servSock);    
  void        DieWithError(char *errorMessage);  
  void        MyHandleTCPClient(int clntSocket);
  static void *ThreadMain(void *threadArgs);  

  int         parseTransaccion ( xmlDocPtr doc, xmlNodePtr cur,tTransaccion &transaccion_p );
  int         parseBuffer ( char *buffer_p,int size_p,  tTransaccion &transaccion_p ) ;
  int         procesaTransaccion (tTransaccion transaccion_p,string &message_p);



} ;

#endif
